| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247 | 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
4774423
4774423
2
1
1
1
1
1
| System.register(['core-js', 'aurelia-framework', 'aurelia-logging-console'], function (_export) {
'use strict';
var core, Aurelia, LogManager, ConsoleAppender, logger, readyQueue, isReady, installedDevelopmentLogging;
_export('bootstrap', bootstrap);
function onReady(callback) {
return new Promise(function (resolve, reject) {
if (!isReady) {
readyQueue.push(function () {
try {
resolve(callback());
} catch (e) {
reject(e);
}
});
} else {
resolve(callback());
}
});
}
function bootstrap(configure) {
return onReady(function () {
var loader = new window.AureliaLoader(),
aurelia = new Aurelia(loader);
return configureAurelia(aurelia).then(function () {
return configure(aurelia);
});
});
}
function ready(global) {
return new Promise(function (resolve, reject) {
Eif (global.document.readyState === 'complete') {
resolve(global.document);
} else {
global.document.addEventListener('DOMContentLoaded', completed, false);
global.addEventListener('load', completed, false);
}
function completed() {
global.document.removeEventListener('DOMContentLoaded', completed, false);
global.removeEventListener('load', completed, false);
resolve(global.document);
}
});
}
function ensureLoader() {
if (!window.AureliaLoader) {
return System.normalize('aurelia-bootstrapper').then(function (bootstrapperName) {
return System.normalize('aurelia-loader-default', bootstrapperName).then(function (loaderName) {
return System['import'](loaderName);
});
});
}
return Promise.resolve();
}
function preparePlatform() {
return System.normalize('aurelia-bootstrapper').then(function (bootstrapperName) {
return System.normalize('aurelia-framework', bootstrapperName).then(function (frameworkName) {
System.map['aurelia-framework'] = frameworkName;
return System.normalize('aurelia-loader', frameworkName).then(function (loaderName) {
var toLoad = [];
if (!System.polyfilled) {
logger.debug('loading core-js');
toLoad.push(System.normalize('core-js', loaderName).then(function (name) {
return System['import'](name);
}));
}
toLoad.push(System.normalize('aurelia-dependency-injection', frameworkName).then(function (name) {
System.map['aurelia-dependency-injection'] = name;
}));
toLoad.push(System.normalize('aurelia-router', bootstrapperName).then(function (name) {
System.map['aurelia-router'] = name;
}));
toLoad.push(System.normalize('aurelia-logging-console', bootstrapperName).then(function (name) {
System.map['aurelia-logging-console'] = name;
}));
if (!('import' in document.createElement('link'))) {
logger.debug('loading the HTMLImports polyfill');
toLoad.push(System.normalize('webcomponentsjs/HTMLImports.min', loaderName).then(function (name) {
return System['import'](name);
}));
}
if (!('content' in document.createElement('template'))) {
logger.debug('loading the HTMLTemplateElement polyfill');
toLoad.push(System.normalize('aurelia-html-template-element', loaderName).then(function (name) {
return System['import'](name);
}));
}
return Promise.all(toLoad);
});
});
});
}
function configureAurelia(aurelia) {
return System.normalize('aurelia-bootstrapper').then(function (bName) {
var toLoad = [];
toLoad.push(System.normalize('aurelia-templating-binding', bName).then(function (templatingBinding) {
aurelia.use.defaultBindingLanguage = function () {
aurelia.use.plugin(templatingBinding);
return this;
};
}));
toLoad.push(System.normalize('aurelia-templating-router', bName).then(function (templatingRouter) {
aurelia.use.router = function () {
aurelia.use.plugin(templatingRouter);
return this;
};
}));
toLoad.push(System.normalize('aurelia-history-browser', bName).then(function (historyBrowser) {
aurelia.use.history = function () {
aurelia.use.plugin(historyBrowser);
return this;
};
}));
toLoad.push(System.normalize('aurelia-templating-resources', bName).then(function (name) {
System.map['aurelia-templating-resources'] = name;
aurelia.use.defaultResources = function () {
aurelia.use.plugin(name);
return this;
};
}));
toLoad.push(System.normalize('aurelia-event-aggregator', bName).then(function (eventAggregator) {
System.map['aurelia-event-aggregator'] = eventAggregator;
aurelia.use.eventAggregator = function () {
aurelia.use.plugin(eventAggregator);
return this;
};
}));
aurelia.use.standardConfiguration = function () {
aurelia.use.defaultBindingLanguage().defaultResources().history().router().eventAggregator();
return this;
};
aurelia.use.developmentLogging = function () {
if (!installedDevelopmentLogging) {
installedDevelopmentLogging = true;
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
}
return this;
};
return Promise.all(toLoad);
});
}
function runningLocally() {
return window.location.protocol !== 'http' && window.location.protocol !== 'https';
}
function handleApp(appHost) {
var configModuleId = appHost.getAttribute('aurelia-app'),
aurelia,
loader;
if (configModuleId) {
loader = new window.AureliaLoader();
return loader.loadModule(configModuleId).then(function (m) {
aurelia = new Aurelia(loader);
aurelia.host = appHost;
return configureAurelia(aurelia).then(function () {
return m.configure(aurelia);
});
});
} else {
aurelia = new Aurelia();
aurelia.host = appHost;
return configureAurelia(aurelia).then(function () {
if (runningLocally()) {
aurelia.use.developmentLogging();
}
aurelia.use.standardConfiguration();
return aurelia.start().then(function (a) {
return a.setRoot();
});
});
}
}
function run() {
return ready(window).then(function (doc) {
var appHost = doc.querySelectorAll('[aurelia-app]');
return ensureLoader().then(function () {
return preparePlatform().then(function () {
var i, ii;
for (i = 0, ii = appHost.length; i < ii; ++i) {
handleApp(appHost[i]);
}
isReady = true;
for (i = 0, ii = readyQueue.length; i < ii; ++i) {
readyQueue[i]();
}
readyQueue = [];
});
});
});
}
return {
setters: [function (_coreJs) {
core = _coreJs['default'];
}, function (_aureliaFramework) {
Aurelia = _aureliaFramework.Aurelia;
LogManager = _aureliaFramework.LogManager;
}, function (_aureliaLoggingConsole) {
ConsoleAppender = _aureliaLoggingConsole.ConsoleAppender;
}],
execute: function () {
logger = LogManager.getLogger('bootstrapper');
readyQueue = [];
isReady = false;
installedDevelopmentLogging = false;
run();
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2Jvb3RzdHJhcHBlci9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2tEQUlJLE1BQU0sRUFFTixVQUFVLEVBQ1YsT0FBTyxFQXVHUCwyQkFBMkI7O3VCQXJGZixTQUFTOztBQWhCekIsV0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFLO0FBQ3RDLFVBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixrQkFBVSxDQUFDLElBQUksQ0FBQyxZQUFNO0FBQ3BCLGNBQUk7QUFDRixtQkFBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7V0FDckIsQ0FBQyxPQUFNLENBQUMsRUFBRTtBQUNULGtCQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDWDtTQUNGLENBQUMsQ0FBQztPQUNKLE1BQU07QUFDTCxlQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztPQUNyQjtLQUNGLENBQUMsQ0FBQztHQUNKOztBQUVNLFdBQVMsU0FBUyxDQUFDLFNBQVMsRUFBRTtBQUNuQyxXQUFPLE9BQU8sQ0FBQyxZQUFNO0FBQ25CLFVBQUksTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRTtVQUNuQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRWxDLGFBQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU07QUFBRSxlQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztPQUFFLENBQUMsQ0FBQztLQUM3RSxDQUFDLENBQUM7R0FDSjs7QUFFRCxXQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDckIsV0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUk7QUFDckMsVUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUc7QUFDOUMsZUFBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUMxQixNQUFNO0FBQ0wsY0FBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkUsY0FBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7T0FDbkQ7O0FBRUQsZUFBUyxTQUFTLEdBQUc7QUFDbkIsY0FBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUUsY0FBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsZUFBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztPQUMxQjtLQUNGLENBQUMsQ0FBQztHQUNKOztBQUVELFdBQVMsWUFBWSxHQUFFO0FBQ3JCLFFBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFDO0FBQ3ZCLGFBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLGdCQUFnQixFQUFDO0FBQzdFLGVBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLFVBQVUsRUFBQztBQUMzRixpQkFBTyxNQUFNLFVBQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNsQyxDQUFDLENBQUE7T0FDSCxDQUFDLENBQUM7S0FDSjs7QUFFRCxXQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztHQUMxQjs7QUFFRCxXQUFTLGVBQWUsR0FBRTtBQUN4QixXQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBUyxnQkFBZ0IsRUFBQztBQUM3RSxhQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBUyxhQUFhLEVBQUM7QUFDekYsY0FBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLGFBQWEsQ0FBQzs7QUFFaEQsZUFBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLFVBQVUsRUFBQztBQUNoRixjQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7O0FBRWhCLGNBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFDO0FBQ3BCLGtCQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDaEMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVMsSUFBSSxFQUFDO0FBQ3JFLHFCQUFPLE1BQU0sVUFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVCLENBQUMsQ0FBQyxDQUFDO1dBQ0w7O0FBRUQsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBUyxJQUFJLEVBQUM7QUFDN0Ysa0JBQU0sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsR0FBRyxJQUFJLENBQUM7V0FDbkQsQ0FBQyxDQUFDLENBQUM7O0FBRUosZ0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLElBQUksRUFBQztBQUNsRixrQkFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQztXQUNyQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixnQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLHlCQUF5QixFQUFFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVMsSUFBSSxFQUFDO0FBQzNGLGtCQUFNLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsSUFBSSxDQUFDO1dBQzlDLENBQUMsQ0FBQyxDQUFDOztBQUVKLGNBQUcsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQSxBQUFDLEVBQUM7QUFDL0Msa0JBQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUNqRCxrQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlDQUFpQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLElBQUksRUFBQztBQUM3RixxQkFBTyxNQUFNLFVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QixDQUFDLENBQUMsQ0FBQztXQUNMOztBQUVELGNBQUcsRUFBRSxTQUFTLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQSxBQUFDLEVBQUM7QUFDcEQsa0JBQU0sQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUN6RCxrQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLCtCQUErQixFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFTLElBQUksRUFBQztBQUMzRixxQkFBTyxNQUFNLFVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QixDQUFDLENBQUMsQ0FBQztXQUNMOztBQUVELGlCQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUIsQ0FBQyxDQUFDO09BQ0osQ0FBQyxDQUFDO0tBQ0osQ0FBQyxDQUFDO0dBQ0o7O0FBSUQsV0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUM7QUFDaEMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVMsS0FBSyxFQUFDO0FBQ2xFLFVBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQzs7QUFFaEIsWUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLGlCQUFpQixFQUFJO0FBQzFGLGVBQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsWUFBVTtBQUM3QyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0QyxpQkFBTyxJQUFJLENBQUM7U0FDYixDQUFDO09BQ0gsQ0FBQyxDQUFDLENBQUM7O0FBRUosWUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLGdCQUFnQixFQUFJO0FBQ3hGLGVBQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLFlBQVU7QUFDN0IsaUJBQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDckMsaUJBQU8sSUFBSSxDQUFDO1NBQ2IsQ0FBQztPQUNILENBQUMsQ0FBQyxDQUFDOztBQUVKLFlBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxjQUFjLEVBQUk7QUFDcEYsZUFBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBVTtBQUM5QixpQkFBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDbkMsaUJBQU8sSUFBSSxDQUFDO1NBQ2IsQ0FBQztPQUNILENBQUMsQ0FBQyxDQUFDOztBQUVKLFlBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxJQUFJLEVBQUk7QUFDL0UsY0FBTSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNsRCxlQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLFlBQVU7QUFDdkMsaUJBQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLGlCQUFPLElBQUksQ0FBQztTQUNiLENBQUE7T0FDRixDQUFDLENBQUMsQ0FBQzs7QUFFSixZQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsZUFBZSxFQUFJO0FBQ3RGLGNBQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsR0FBRyxlQUFlLENBQUM7QUFDekQsZUFBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsWUFBVTtBQUN0QyxpQkFBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDcEMsaUJBQU8sSUFBSSxDQUFDO1NBQ2IsQ0FBQztPQUNILENBQUMsQ0FBQyxDQUFDOztBQUVKLGFBQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEdBQUcsWUFBVTtBQUM1QyxlQUFPLENBQUMsR0FBRyxDQUNSLHNCQUFzQixFQUFFLENBQ3hCLGdCQUFnQixFQUFFLENBQ2xCLE9BQU8sRUFBRSxDQUNULE1BQU0sRUFBRSxDQUNSLGVBQWUsRUFBRSxDQUFDO0FBQ3JCLGVBQU8sSUFBSSxDQUFDO09BQ2IsQ0FBQzs7QUFFRixhQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLFlBQVU7QUFDekMsWUFBRyxDQUFDLDJCQUEyQixFQUFDO0FBQzlCLHFDQUEyQixHQUFHLElBQUksQ0FBQztBQUNuQyxvQkFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFDOUMsb0JBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRDtBQUNELGVBQU8sSUFBSSxDQUFDO09BQ2IsQ0FBQTs7QUFFRCxhQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDNUIsQ0FBQyxDQUFDO0dBQ0o7O0FBRUQsV0FBUyxjQUFjLEdBQUU7QUFDdkIsV0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO0dBQ3BGOztBQUVELFdBQVMsU0FBUyxDQUFDLE9BQU8sRUFBQztBQUN6QixRQUFJLGNBQWMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUNwRCxPQUFPO1FBQUUsTUFBTSxDQUFDOztBQUVwQixRQUFHLGNBQWMsRUFBQztBQUNoQixZQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7O0FBRXBDLGFBQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FDckMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxFQUFJO0FBQ1QsZUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLGVBQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLGVBQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU07QUFBRSxpQkFBTyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQUUsQ0FBQyxDQUFDO09BQy9FLENBQUMsQ0FBQztLQUNOLE1BQUk7QUFDSCxhQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUN4QixhQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQzs7QUFFdkIsYUFBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBTTtBQUMxQyxZQUFHLGNBQWMsRUFBRSxFQUFDO0FBQ2xCLGlCQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDbEM7O0FBRUQsZUFBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOztBQUVwQyxlQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDO2lCQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7U0FBQSxDQUFDLENBQUM7T0FDL0MsQ0FBQyxDQUFDO0tBQ0o7R0FDRjs7QUFFRCxXQUFTLEdBQUcsR0FBRztBQUNiLFdBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLEdBQUcsRUFBSTtBQUMvQixVQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBRXBELGFBQU8sWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQU07QUFDL0IsZUFBTyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBVTtBQUN0QyxjQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7O0FBRVYsZUFBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDNUMscUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztXQUN2Qjs7QUFFRCxpQkFBTyxHQUFHLElBQUksQ0FBQztBQUNmLGVBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQy9DLHNCQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztXQUNqQjtBQUNELG9CQUFVLEdBQUcsRUFBRSxDQUFDO1NBQ2pCLENBQUMsQ0FBQztPQUNKLENBQUMsQ0FBQztLQUNKLENBQUMsQ0FBQztHQUNKOzs7Ozs7a0NBcE9PLE9BQU87cUNBQUUsVUFBVTs7K0NBQ25CLGVBQWU7OztBQUVuQixZQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFFN0MsZ0JBQVUsR0FBRyxFQUFFO0FBQ2YsYUFBTyxHQUFHLEtBQUs7QUF1R2YsaUNBQTJCLEdBQUcsS0FBSztBQXlIdkMsU0FBRyxFQUFFLENBQUMiLCJmaWxlIjoiL1VzZXJzL0Vpc2VuYmVyZ0VmZmVjdC9Eb2N1bWVudHMvR2l0SHViL1RoZSBEdXJhbmRhbCBQcm9qZWN0L2F1cmVsaWEvYm9vdHN0cmFwcGVyL3NyYy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3JlIGZyb20gJ2NvcmUtanMnO1xuaW1wb3J0IHtBdXJlbGlhLCBMb2dNYW5hZ2VyfSBmcm9tICdhdXJlbGlhLWZyYW1ld29yayc7XG5pbXBvcnQge0NvbnNvbGVBcHBlbmRlcn0gZnJvbSAnYXVyZWxpYS1sb2dnaW5nLWNvbnNvbGUnO1xuXG52YXIgbG9nZ2VyID0gTG9nTWFuYWdlci5nZXRMb2dnZXIoJ2Jvb3RzdHJhcHBlcicpO1xuXG52YXIgcmVhZHlRdWV1ZSA9IFtdO1xudmFyIGlzUmVhZHkgPSBmYWxzZTtcblxuZnVuY3Rpb24gb25SZWFkeShjYWxsYmFjaykge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgcmVhZHlRdWV1ZS5wdXNoKCgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXNvbHZlKGNhbGxiYWNrKCkpO1xuICAgICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGNhbGxiYWNrKCkpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXAoY29uZmlndXJlKSB7XG4gIHJldHVybiBvblJlYWR5KCgpID0+IHtcbiAgICB2YXIgbG9hZGVyID0gbmV3IHdpbmRvdy5BdXJlbGlhTG9hZGVyKCksXG4gICAgICAgIGF1cmVsaWEgPSBuZXcgQXVyZWxpYShsb2FkZXIpO1xuXG4gICAgcmV0dXJuIGNvbmZpZ3VyZUF1cmVsaWEoYXVyZWxpYSkudGhlbigoKSA9PiB7IHJldHVybiBjb25maWd1cmUoYXVyZWxpYSk7IH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZHkoZ2xvYmFsKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PntcbiAgICBpZiAoZ2xvYmFsLmRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIiApIHtcbiAgICAgIHJlc29sdmUoZ2xvYmFsLmRvY3VtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2xvYmFsLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsIGNvbXBsZXRlZCwgZmFsc2UpO1xuICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGNvbXBsZXRlZCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXBsZXRlZCgpIHtcbiAgICAgIGdsb2JhbC5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBjb21wbGV0ZWQsIGZhbHNlKTtcbiAgICAgIGdsb2JhbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLCBjb21wbGV0ZWQsIGZhbHNlKTtcbiAgICAgIHJlc29sdmUoZ2xvYmFsLmRvY3VtZW50KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVMb2FkZXIoKXtcbiAgaWYoIXdpbmRvdy5BdXJlbGlhTG9hZGVyKXtcbiAgICByZXR1cm4gU3lzdGVtLm5vcm1hbGl6ZSgnYXVyZWxpYS1ib290c3RyYXBwZXInKS50aGVuKGZ1bmN0aW9uKGJvb3RzdHJhcHBlck5hbWUpe1xuICAgICAgcmV0dXJuIFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtbG9hZGVyLWRlZmF1bHQnLCBib290c3RyYXBwZXJOYW1lKS50aGVuKGZ1bmN0aW9uKGxvYWRlck5hbWUpe1xuICAgICAgICByZXR1cm4gU3lzdGVtLmltcG9ydChsb2FkZXJOYW1lKTtcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQbGF0Zm9ybSgpe1xuICByZXR1cm4gU3lzdGVtLm5vcm1hbGl6ZSgnYXVyZWxpYS1ib290c3RyYXBwZXInKS50aGVuKGZ1bmN0aW9uKGJvb3RzdHJhcHBlck5hbWUpe1xuICAgIHJldHVybiBTeXN0ZW0ubm9ybWFsaXplKCdhdXJlbGlhLWZyYW1ld29yaycsIGJvb3RzdHJhcHBlck5hbWUpLnRoZW4oZnVuY3Rpb24oZnJhbWV3b3JrTmFtZSl7XG4gICAgICBTeXN0ZW0ubWFwWydhdXJlbGlhLWZyYW1ld29yayddID0gZnJhbWV3b3JrTmFtZTtcblxuICAgICAgcmV0dXJuIFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtbG9hZGVyJywgZnJhbWV3b3JrTmFtZSkudGhlbihmdW5jdGlvbihsb2FkZXJOYW1lKXtcbiAgICAgICAgdmFyIHRvTG9hZCA9IFtdO1xuXG4gICAgICAgIGlmKCFTeXN0ZW0ucG9seWZpbGxlZCl7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKCdsb2FkaW5nIGNvcmUtanMnKTtcbiAgICAgICAgICB0b0xvYWQucHVzaChTeXN0ZW0ubm9ybWFsaXplKCdjb3JlLWpzJywgbG9hZGVyTmFtZSkudGhlbihmdW5jdGlvbihuYW1lKXtcbiAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uaW1wb3J0KG5hbWUpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvTG9hZC5wdXNoKFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtZGVwZW5kZW5jeS1pbmplY3Rpb24nLCBmcmFtZXdvcmtOYW1lKS50aGVuKGZ1bmN0aW9uKG5hbWUpe1xuICAgICAgICAgIFN5c3RlbS5tYXBbJ2F1cmVsaWEtZGVwZW5kZW5jeS1pbmplY3Rpb24nXSA9IG5hbWU7XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0b0xvYWQucHVzaChTeXN0ZW0ubm9ybWFsaXplKCdhdXJlbGlhLXJvdXRlcicsIGJvb3RzdHJhcHBlck5hbWUpLnRoZW4oZnVuY3Rpb24obmFtZSl7XG4gICAgICAgICAgU3lzdGVtLm1hcFsnYXVyZWxpYS1yb3V0ZXInXSA9IG5hbWU7XG4gICAgICAgIH0pKTtcblxuICAgICAgICB0b0xvYWQucHVzaChTeXN0ZW0ubm9ybWFsaXplKCdhdXJlbGlhLWxvZ2dpbmctY29uc29sZScsIGJvb3RzdHJhcHBlck5hbWUpLnRoZW4oZnVuY3Rpb24obmFtZSl7XG4gICAgICAgICAgU3lzdGVtLm1hcFsnYXVyZWxpYS1sb2dnaW5nLWNvbnNvbGUnXSA9IG5hbWU7XG4gICAgICAgIH0pKTtcblxuICAgICAgICBpZighKCdpbXBvcnQnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKSkpe1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnbG9hZGluZyB0aGUgSFRNTEltcG9ydHMgcG9seWZpbGwnKTtcbiAgICAgICAgICB0b0xvYWQucHVzaChTeXN0ZW0ubm9ybWFsaXplKCd3ZWJjb21wb25lbnRzanMvSFRNTEltcG9ydHMubWluJywgbG9hZGVyTmFtZSkudGhlbihmdW5jdGlvbihuYW1lKXtcbiAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uaW1wb3J0KG5hbWUpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCEoXCJjb250ZW50XCIgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpKSl7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKCdsb2FkaW5nIHRoZSBIVE1MVGVtcGxhdGVFbGVtZW50IHBvbHlmaWxsJyk7XG4gICAgICAgICAgdG9Mb2FkLnB1c2goU3lzdGVtLm5vcm1hbGl6ZSgnYXVyZWxpYS1odG1sLXRlbXBsYXRlLWVsZW1lbnQnLCBsb2FkZXJOYW1lKS50aGVuKGZ1bmN0aW9uKG5hbWUpe1xuICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5pbXBvcnQobmFtZSk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHRvTG9hZCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbnZhciBpbnN0YWxsZWREZXZlbG9wbWVudExvZ2dpbmcgPSBmYWxzZTtcblxuZnVuY3Rpb24gY29uZmlndXJlQXVyZWxpYShhdXJlbGlhKXtcbiAgcmV0dXJuIFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtYm9vdHN0cmFwcGVyJykudGhlbihmdW5jdGlvbihiTmFtZSl7XG4gICAgdmFyIHRvTG9hZCA9IFtdO1xuXG4gICAgdG9Mb2FkLnB1c2goU3lzdGVtLm5vcm1hbGl6ZSgnYXVyZWxpYS10ZW1wbGF0aW5nLWJpbmRpbmcnLCBiTmFtZSkudGhlbih0ZW1wbGF0aW5nQmluZGluZyA9PiB7XG4gICAgICBhdXJlbGlhLnVzZS5kZWZhdWx0QmluZGluZ0xhbmd1YWdlID0gZnVuY3Rpb24oKXtcbiAgICAgICAgYXVyZWxpYS51c2UucGx1Z2luKHRlbXBsYXRpbmdCaW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0pKTtcblxuICAgIHRvTG9hZC5wdXNoKFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtdGVtcGxhdGluZy1yb3V0ZXInLCBiTmFtZSkudGhlbih0ZW1wbGF0aW5nUm91dGVyID0+IHtcbiAgICAgIGF1cmVsaWEudXNlLnJvdXRlciA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIGF1cmVsaWEudXNlLnBsdWdpbih0ZW1wbGF0aW5nUm91dGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0pKTtcblxuICAgIHRvTG9hZC5wdXNoKFN5c3RlbS5ub3JtYWxpemUoJ2F1cmVsaWEtaGlzdG9yeS1icm93c2VyJywgYk5hbWUpLnRoZW4oaGlzdG9yeUJyb3dzZXIgPT4ge1xuICAgICAgYXVyZWxpYS51c2UuaGlzdG9yeSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIGF1cmVsaWEudXNlLnBsdWdpbihoaXN0b3J5QnJvd3Nlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfTtcbiAgICB9KSk7XG5cbiAgICB0b0xvYWQucHVzaChTeXN0ZW0ubm9ybWFsaXplKCdhdXJlbGlhLXRlbXBsYXRpbmctcmVzb3VyY2VzJywgYk5hbWUpLnRoZW4obmFtZSA9PiB7XG4gICAgICBTeXN0ZW0ubWFwWydhdXJlbGlhLXRlbXBsYXRpbmctcmVzb3VyY2VzJ10gPSBuYW1lO1xuICAgICAgYXVyZWxpYS51c2UuZGVmYXVsdFJlc291cmNlcyA9IGZ1bmN0aW9uKCl7XG4gICAgICAgIGF1cmVsaWEudXNlLnBsdWdpbihuYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdG9Mb2FkLnB1c2goU3lzdGVtLm5vcm1hbGl6ZSgnYXVyZWxpYS1ldmVudC1hZ2dyZWdhdG9yJywgYk5hbWUpLnRoZW4oZXZlbnRBZ2dyZWdhdG9yID0+IHtcbiAgICAgIFN5c3RlbS5tYXBbJ2F1cmVsaWEtZXZlbnQtYWdncmVnYXRvciddID0gZXZlbnRBZ2dyZWdhdG9yO1xuICAgICAgYXVyZWxpYS51c2UuZXZlbnRBZ2dyZWdhdG9yID0gZnVuY3Rpb24oKXtcbiAgICAgICAgYXVyZWxpYS51c2UucGx1Z2luKGV2ZW50QWdncmVnYXRvcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfTtcbiAgICB9KSk7XG5cbiAgICBhdXJlbGlhLnVzZS5zdGFuZGFyZENvbmZpZ3VyYXRpb24gPSBmdW5jdGlvbigpe1xuICAgICAgYXVyZWxpYS51c2VcbiAgICAgICAgLmRlZmF1bHRCaW5kaW5nTGFuZ3VhZ2UoKVxuICAgICAgICAuZGVmYXVsdFJlc291cmNlcygpXG4gICAgICAgIC5oaXN0b3J5KClcbiAgICAgICAgLnJvdXRlcigpXG4gICAgICAgIC5ldmVudEFnZ3JlZ2F0b3IoKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICBhdXJlbGlhLnVzZS5kZXZlbG9wbWVudExvZ2dpbmcgPSBmdW5jdGlvbigpe1xuICAgICAgaWYoIWluc3RhbGxlZERldmVsb3BtZW50TG9nZ2luZyl7XG4gICAgICAgIGluc3RhbGxlZERldmVsb3BtZW50TG9nZ2luZyA9IHRydWU7XG4gICAgICAgIExvZ01hbmFnZXIuYWRkQXBwZW5kZXIobmV3IENvbnNvbGVBcHBlbmRlcigpKTtcbiAgICAgICAgTG9nTWFuYWdlci5zZXRMZXZlbChMb2dNYW5hZ2VyLmxvZ0xldmVsLmRlYnVnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh0b0xvYWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVubmluZ0xvY2FsbHkoKXtcbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2h0dHAnICYmIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCAhPT0gJ2h0dHBzJztcbn1cblxuZnVuY3Rpb24gaGFuZGxlQXBwKGFwcEhvc3Qpe1xuICB2YXIgY29uZmlnTW9kdWxlSWQgPSBhcHBIb3N0LmdldEF0dHJpYnV0ZSgnYXVyZWxpYS1hcHAnKSxcbiAgICAgIGF1cmVsaWEsIGxvYWRlcjtcblxuICBpZihjb25maWdNb2R1bGVJZCl7XG4gICAgbG9hZGVyID0gbmV3IHdpbmRvdy5BdXJlbGlhTG9hZGVyKCk7XG5cbiAgICByZXR1cm4gbG9hZGVyLmxvYWRNb2R1bGUoY29uZmlnTW9kdWxlSWQpXG4gICAgICAudGhlbihtID0+IHtcbiAgICAgICAgYXVyZWxpYSA9IG5ldyBBdXJlbGlhKGxvYWRlcik7XG4gICAgICAgIGF1cmVsaWEuaG9zdCA9IGFwcEhvc3Q7XG4gICAgICAgIHJldHVybiBjb25maWd1cmVBdXJlbGlhKGF1cmVsaWEpLnRoZW4oKCkgPT4geyByZXR1cm4gbS5jb25maWd1cmUoYXVyZWxpYSk7IH0pO1xuICAgICAgfSk7XG4gIH1lbHNle1xuICAgIGF1cmVsaWEgPSBuZXcgQXVyZWxpYSgpO1xuICAgIGF1cmVsaWEuaG9zdCA9IGFwcEhvc3Q7XG5cbiAgICByZXR1cm4gY29uZmlndXJlQXVyZWxpYShhdXJlbGlhKS50aGVuKCgpID0+IHtcbiAgICAgIGlmKHJ1bm5pbmdMb2NhbGx5KCkpe1xuICAgICAgICBhdXJlbGlhLnVzZS5kZXZlbG9wbWVudExvZ2dpbmcoKTtcbiAgICAgIH1cblxuICAgICAgYXVyZWxpYS51c2Uuc3RhbmRhcmRDb25maWd1cmF0aW9uKCk7XG5cbiAgICAgIHJldHVybiBhdXJlbGlhLnN0YXJ0KCkudGhlbihhID0+IGEuc2V0Um9vdCgpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBydW4oKSB7XG4gIHJldHVybiByZWFkeSh3aW5kb3cpLnRoZW4oZG9jID0+IHtcbiAgICB2YXIgYXBwSG9zdCA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKFwiW2F1cmVsaWEtYXBwXVwiKTtcblxuICAgIHJldHVybiBlbnN1cmVMb2FkZXIoKS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiBwcmVwYXJlUGxhdGZvcm0oKS50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciBpLCBpaTtcblxuICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IGFwcEhvc3QubGVuZ3RoOyBpIDwgaWk7ICsraSkge1xuICAgICAgICAgIGhhbmRsZUFwcChhcHBIb3N0W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzUmVhZHkgPSB0cnVlO1xuICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IHJlYWR5UXVldWUubGVuZ3RoOyBpIDwgaWk7ICsraSkge1xuICAgICAgICAgIHJlYWR5UXVldWVbaV0oKTtcbiAgICAgICAgfVxuICAgICAgICByZWFkeVF1ZXVlID0gW107XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbnJ1bigpO1xuIl19 |